perm filename APP6[AIM,DBL]1 blob
sn#124704 filedate 1974-10-17 generic text, type T, neo UTF8
00100 .DEVICE XGP
00200 .FONT 1 "FIX25"
00300 .FONT 2 "SIGN57"
00400 .FONT 3 "SHD40"
00500 .FONT 4 "BDI25"
00600 .FONT 5 "NGB30"
00700 .FONT 6 "NGR20"
00800 .PAGE FRAME 53 HIGH 75 WIDE
00900 .TURN ON "↓_π{"
01000 .TURN ON "\" FOR "%"
01100 .MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200 .MACRO E ⊂ APART END ⊃
01300 .TABBREAK
01400 .EVERY FOOTING(\6Fourth Draft .... {DATE},page A6.{IF PAGE = 1 THEN 1 ELSE PAGE},User/CF Dialogue excerpts\*)
01500 .EVERY HEADING(\3BEINGS\*,,\4Doug Lenat\*)
01600 .COUNT PAGE PRINTING "1"
01700 .NEXT PAGE
01800
00100 \2APPENDIX 6. \* \3CF .... RUNNING\*
00200 .GROUP SKIP 10
00300 .NOFILL
00400 ←\4ENTER(T)\*
00500
00600 USER INTERRUPT LEVEL... \40\*
00700
00800
00900 \5PUP:\* (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)
01000
01100
01200 \5PUP:\* (THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
01300 CLASSIFICATORY:CONCEPT:FORMATION)
01400
01500 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
01600 \4(ARCH (A B C) (S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))\*
01700
01800 ARCH
01900 OBJECTS (A B C)
02000 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02100
02200 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02300 \4(TOWER (A B C D) (S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))\*
02400
02500 ARCH
02600 OBJECTS (A B C)
02700 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02800
02900 TOWER
03000 OBJECTS (A B C D)
03100 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
03200
03300 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
03400 \4(??? (A B C) (S A B) (S C B))\*
03500 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
03600 ARCH))
03700
03800 PLEASE GIVE ME NAME:OF:CLASS
03900 \4ARCH\*
04000
04100 ARCH
04200 OBJECTS (A B C)
04300 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
04400
04500 TOWER
04600 OBJECTS (A B C D)
04700 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
04800
04900 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
05000 \4(??? (A B C) (S A B) (S C B) (BLOCK A) (BLOCK C) (TOUCH A C) (BLOCK B)
05100 )\*
05200 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
05300 ARCH))
05400
05500 PLEASE GIVE ME NAME:OF:CLASS
05600 \4NOTHING\*
05700
05800 ARCH
05900 OBJECTS (A B C)
06000 MUSNT HAVE ((TOUCH A C))
06100 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
06200
06300 TOWER
06400 OBJECTS (A B C D)
06500 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
06600
06700 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
06800 \4(??? (A B C) (BLOCK A) (BLOCK B) (BLOCK C))\*
06900 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
07000 ARCH))
07100
07200 PLEASE GIVE ME NAME:OF:CLASS
07300 \4NOTHING\*
07400
07500 ARCH
07600 OBJECTS (A B C)
07700 MUST HAVE ((S A B))
07800 MUSNT HAVE ((TOUCH A C))
07900 MAY HAVE ((S C B) (BLOCK A) (BLOCK B) (BLOCK C))
08000
08100 TOWER
08200 OBJECTS (A B C D)
08300 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
08400
08500 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
08600 \4(??? (A B C) (BLOCK A) (BLOCK C) (S A B) (BLOCK B))\*
08700 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
08800 ARCH))
08900
09000 PLEASE GIVE ME NAME:OF:CLASS
09100 \4NOTHING\*
09200
09300 ARCH
09400 OBJECTS (A B C)
09500 MUST HAVE ((S A B) (S C B))
09600 MUSNT HAVE ((TOUCH A C))
09700 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
09800
09900 TOWER
10000 OBJECTS (A B C D)
10100 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
10200
10300 \5<notice that at this point, the model for ARCH is the usual one>\*
10400
10500
10600 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
10700 \4(??? (A B C) (TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))\*
10800 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
10900 TOWER))
11000
11100 PLEASE GIVE ME NAME:OF:CLASS
11200 \4ROW\*
11300
11400 ARCH
11500 OBJECTS (A B C)
11600 MUST HAVE ((S A B) (S C B))
11700 MUSNT HAVE ((TOUCH A C))
11800 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
11900
12000 TOWER
12100 OBJECTS (A B C D)
12200 MUST HAVE ((S A B))
12300 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
12400
12500 ROW
12600 OBJECTS (A B C)
12700 MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
12800
12900 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
13000 \4(ARCH (A B C D) (S A B) (TOUCH A C))\*
13100
13200 ARCH
13300 OBJECTS (A B C (D))
13400 MUST HAVE ((S A B))
13500 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
13600
13700 TOWER
13800 OBJECTS (A B C D)
13900 MUST HAVE ((S A B))
14000 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
14100
14200 ROW
14300 OBJECTS (A B C)
14400 MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
14500
14600 \5<notice how contradictory user input is handled: features are simply
14700 transferred from the MUST/MUSTNOT sets to the MAY set>\*
14800
14900
15000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
15100 \4(HALT)\*
15200
15300 \5PUP:\* (PUP HAS THOUGHT ABOUT THE CLASSIFICATORY:CONCEPT:FORMATION TYPE OF
15400 CONCEPT:FORMATION)
15500
15600
15700
15800
15900 FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
16000
16100 1 EXIT FROM SYSTEM
16200 2 CONTINUE SERVING, AS BEFORE
16300 3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
16400 4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
16500
16600 OK, GO .......... \43\*
16700
16800 USER INTERRUPT LEVEL... \410\*
16900
17000 INTERRUPT? \4YES
17100 \*REQUEST: \4CH
17200 \*NIL *** SATISFY *** (CF:1)
17300 REQUEST: \4WHAT
17400 \*(FAST:SATISFY THE SIMPLE SUBGOAL (AWARE USER (PUP IS ABOUT TO WORK ON
17500 -CONCEPT FORMATION)))
17600 REQUEST: \4HOW
17700 \*(PASS CONTROL TO THE SIMPLEST SUFFICIENT BEING)
17800 REQUEST: \4WHY
17900 \*((AWARE USER (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)) IS A REQUISI
18000 -TE TO BE SATISFIED)
18100 REQUEST: \4OLDER
18200 \*CF:1
18300 REQUEST: \4WHAT
18400 \*(A SPECIALIZED BEING WHICH DOES (LEARN HOW TO IMPOSE A CONCEPT STRUCTU
18500 -RING UPON A DOMAIN; LEARN HOW TO CHARACTERIZE,
18600 OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
18700 REQUEST: \4WHY
18800 \*(CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE AND CONCEPT:FORMAT
18900 -ION IS TOO GENERAL TO USE AS IT IS)
19000 REQUEST: \4QUIT
19100 \*INTERRUPT? \4NO
19200 \*INTERRUPT? \4YES
19300 \*REQUEST: \4BEING
19400 \*PAD:2
19500 REQUEST: \4WHAT
19600 \*(A SPECIALIZED BEING WHICH DOES (DIVIDE A DOMAIN INTO SUBDOMAINS; USUA
19700 -LLY THESE WILL BE DISJOINT, AND THEIR UNION
19800 WILL BE THE ENTIRE DOMAIN))
19900 REQUEST: \4WHY
20000 \*(BECAUSE PUP MUST ENCODE A FUNCTION WHICH PARTITIONS A DOMAIN INTO CLA
20100 -SSES AND PARTITION:A:DOMAIN IS TOO GENERAL
20200 TO USE AS IT IS)
20300 REQUEST: \4HOW
20400 \*(BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF
20500 THE PARTITION ONE PAIR AT A TIME; HERE A
20600 PAIR IS <ELEMENT, CLASS:NAME>)
20700 REQUEST: \4QUIT
20800 \*INTERRUPT? \4YES
20900 \*REQUEST: \4CH
21000 \*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
21100 REQUEST: \4WHY
21200 \*(PUP WANTS ELEMENT:4 ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT
21300 -AND TAKE:HOLD:OF IS TOO GENERAL TO USE AS
21400 IT IS)
21500 REQUEST: \4HOW
21600 \*(LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER T
21700 -O GIVE ELEMENT:4 TO US)
21800 REQUEST: \4AFFECTS
21900 \*((IN POSSIBLE CALLED) (ELEMENT:4 POSSIBLE CALLED) (ELEMENT:4 POSSIBLE
22000 -CALLED) (ELEMENT:OBJECTS:11 POSSIBLE CALLED)
22100 (ELEMENT:CLASSNAME:13 POSSIBLE CALLED) (ELEMENT:RELNS:15 POSSIBLE CALLED
22200 ))
22300 REQUEST: \4QUIT
22400
22500
22600 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
22700 \4(??? (A B) (BLOCK A]\*
22800
22900 INTERRUPT? \4NO
23000 \*INTERRUPT? \4YES
23100 \*REQUEST: \4CH
23200 \*NIL *** SOME:PART:OF:14 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
23300 REQUEST: \4WHAT
23400 \*(A SPECIALIZED BEING WHICH DOES (THIS IS A DESTRUCTIVE FUNCTION; IT BR
23500 -EAKS A PIECE OFF OF (??? (A B) (BLOCK A))))
23600 REQUEST: \4HOW
23700 \*(USE SOME PRE:EXISTING TECHNIQUE TO GET THE SIMPLE LISP PROGRAM (MADE
23800 -UP OF CARS AND CDRS) WHICH DOES THE JOB. SUCH
23900 FACILITIES MIGHT BE PW1, PUP, DAVID SHAW'S PGM, OR EVEN TRIAL AND ERROR.
24000 )
24100 REQUEST: \4WHY
24200 \*(ONLY PART OF (??? (A B) (BLOCK A)) IS DESIRED AT THIS POINT AND SOME:
24300 -PART:OF IS TOO GENERAL TO USE AS IT IS)
24400 REQUEST: \4META:CODE
24500 \*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
24600 EVAL ARG1)) (CAR ARG1))
24700 REQUEST: \4QUIT
24800 \*INTERRUPT? \4NO
24900 \*INTERRUPT? \4NO
25000 \*INTERRUPT? \4NO
25100 \*INTERRUPT? \4YES
25200 \*REQUEST: \4CH
25300 \*NIL *** FOREACH:17 *** (GET:HOLD:OF:8 PAD:2 CF:1)
25400 REQUEST: \4WHAT
25500 \*(A SPECIALIZED BEING WHICH DOES (GO THROUGH THE KNOWN SPACE OF POSSIBL
25600 -E:NAMES:OF:CLASS ,WHICH IS
25700 SET:OF:POSSIBLE:NAMES:OF:CLASS ,AND PERFORM (TEST:18 POSSIBLE:NAME:OF:CL
25800 -ASS (COMMENT FOR SATISFACTION OF GOAL CRITERIA))
25900 ON EACH, UNTIL SOME SPECIFIED TERMINATION CONDITION IS REACHED))
26000 REQUEST: \4QUIT
26100 \*INTERRUPT? \4YES
26200 \*REQUEST: \4BEING
26300 \*TEST:18
26400 REQUEST: \4WHAT
26500 \*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ARCH MEETS TH
26600 -E DESIRED CONDITIONS (COMMENT FOR SATISFACTION
26700 OF GOAL CRITERIA)))
26800 REQUEST: \4QUIT
26900 \*INTERRUPT? \4NO
27000 \*INTERRUPT? \4NO
27100 \*INTERRUPT? \4NO
27200 \*INTERRUPT? \4YES
27300 \*REQUEST: \4CH
27400 \*NIL *** COMPARE:26 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PA
27500 -D:2 CF:1)
27600 REQUEST: \4WHAT
27700 \*(A SPECIALIZED BEING WHICH DOES (COMPARE ((S A B) (BLOCK A) (BLOCK B)
27800 (BLOCK C) (TOUCH A C) (S C B)) WITH ((BLOCK
27900 A))))
28000 REQUEST: \4WHY
28100 \*(PUP WANTS TO SEE IF ((S A B) (BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C
28200 ) (S C B)) IS CLOSE ENOUGH TO ((BLOCK A))
28300 AND COMPARE IS TOO GENERAL TO USE AS IT IS)
28400 REQUEST: \4QUIT
28500 \*INTERRUPT? \4YES
28600 \*REQUEST: \4CH
28700 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
28800 -ET:HOLD:OF:8 PAD:2 CF:1)
28900 REQUEST: \4WHAT
29000 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (S A B) IS IN CONTRADICTION TO
29100 THE COLLECTION ((BLOCK A))))
29200 REQUEST: \4HOW
29300 \*(SEE HOW A (S A B) TYPE OF ARG1 CAN BE CONTRADICTORY, THEN EXAMINE THE
29400 RELATIONSHIP BETWEEN (S A B) AND ((BLOCK
29500 A)))
29600 REQUEST: \4QUIT
29700 \*INTERRUPT? \4YES
29800 \*REQUEST: \4CH
29900 \*NIL *** JOIN:23 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PAD:2
30000 CF:1)
30100 REQUEST: \4QUIT
30200 \*INTERRUPT? \4YES
30300 \*REQUEST: \4CH
30400 \*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
30500 REQUEST: \4QUIT
30600 \*INTERRUPT? \4NO
30700 \*INTERRUPT? \4NO
30800 \*INTERRUPT? \4NO
30900 \*INTERRUPT? \4NO
31000 \*INTERRUPT? \4YES
31100 \*REQUEST: \4CH
31200 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
31300 -ET:HOLD:OF:8 PAD:2 CF:1)
31400 REQUEST: \4META:CODE
31500 \*(PROGN
31600 (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS RELATION)
31700 (COMMENT IN ALL CALLS TO DATE, ARG2 IS
31800 INSTANTIATED AS ELEMENT:RELNS:15)
31900 (COND ((MEMBER ARG1 YES:RELNS:28)
32000 (PROGN (COMMENT ARG1 OCCURS WITH PROBABILITY 1, SO IT HAD
32100 BETTER BE IN ARG2, THE RELEVANT PIECE OF THE WORLD)
32200 (NOT (MEMBER ARG1 ARG2))))
32300 ((MEMBER ARG1 NO:RELNS:29)
32400 (PROGN (COMMENT SINCE ARG1 SHOULD NEVER OCCUR, WE HAVE A CO
32500 -NTRADICTION IF IT IS A MEMBER OF ARG2)
32600 (MEMBER ARG1 ARG2)))
32700 (T (PROGN (COMMENT WE MAY OR MAY NOT HAVE ARG1 IN ARG2; EIT
32800 -HER CASE IS ALLOWABLE; SO WE NEVER HAVE A
32900 CONTRADICTION)
33000 NIL))))
33100 REQUEST: \4QUIT
33200 \*INTERRUPT? \4NO
33300 \*INTERRUPT? \4YES
33400 \*REQUEST: \4CH
33500 \*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
33600 REQUEST: \4WHAT
33700 \*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ROW MEETS THE
33800 DESIRED CONDITIONS (COMMENT FOR SATISFACTION
33900 OF GOAL CRITERIA)))
34000 REQUEST: \4QUIT
34100 \*INTERRUPT? \4NO
34200 \*INTERRUPT? \4NO
34300 \*INTERRUPT? \4NO
34400 \*INTERRUPT? \4NO
34500 \*INTERRUPT? \4NO
34600 \*INTERRUPT? \4YES
34700 \*REQUEST: \4CH
34800 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
34900 -ET:HOLD:OF:8 PAD:2 CF:1)
35000 REQUEST: \4QUIT
35100 \*INTERRUPT? \4YES
35200 \*REQUEST: \4CH
35300 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
35400 -ET:HOLD:OF:8 PAD:2 CF:1)
35500 REQUEST: \4WHAT
35600 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (BLOCK A) IS IN CONTRADICTION
35700 -TO THE COLLECTION ((BLOCK A))))
35800 REQUEST: \4QUIT
35900 \*INTERRUPT? \4YES
36000 \*REQUEST: \4CH
36100 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17 G
36200 -ET:HOLD:OF:8 PAD:2 CF:1)
36300 REQUEST: \4WHAT
36400 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (RED B) IS IN CONTRADICTION TO
36500 THE COLLECTION ((BLOCK A))))
36600 REQUEST: \4QUIT
36700 \*INTERRUPT? \4NO
36800
36900
37000 \*(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS
37100 -IS ROW))
37200
37300 INTERRUPT? \4YES
37400 \*REQUEST: \4CH
37500 \*NIL *** ASK:USER:ABOUT:60 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
37600 REQUEST: \4WHAT
37700 \*(A SPECIALIZED BEING WHICH DOES (ASK THE USER TO RESOLVE DECISION NAME
37800 :OF:CLASS))
37900 REQUEST: \4WHY
38000 \*(BECAUSE PUP CANNOT RESOLVE IT, BUT MUST AT THIS TIME AND ASK:USER:ABO
38100 -UT IS TOO GENERAL TO USE AS IT IS)
38200 REQUEST: \4HOW
38300 \*(ASK THE USER WHAT THE RESOLUTION IS)
38400 REQUEST: \4META:CODE
38500 \*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
38600 QUOTE NAME:OF:CLASS)) (PROGN (PUPRIN1
38700 "
38800 PLEASE GIVE ME ") (PUPRINT ARG1) (SET ARG1 (READ))))
38900 REQUEST: \4QUIT
39000 \*
39100
39200
39300 PLEASE GIVE ME NAME:OF:CLASS
39400 \4NOTHING\*
39500
39600 INTERRUPT? \4YES
39700 \*REQUEST: \4CH
39800 \*NIL *** MODIFY:STRUCTURE:9 *** (PAD:2 CF:1)
39900 REQUEST: \4WHAT
40000 \*(A SPECIALIZED BEING WHICH DOES (MODIFY THE STRUCTURE CONTAINING
40100 "NOTHING" AS AN ELEMENT))
40200 REQUEST: \4QUIT
40300 \*INTERRUPT? \4YES
40400 \*REQUEST: \4BEING
40500 \*CONDITIONAL:INSERTION:44
40600 REQUEST: \4QUIT
40700 \*INTERRUPT? \4NO
40800 \*INTERRUPT? \4NO
40900 \*INTERRUPT? \4YES
41000 \*REQUEST: \4CH
41100 \*NIL *** COMPLEX:ALTERATION:46 *** (COMPLEX:ALTERATION:45 MODIFY:STRUCT
41200 -URE:9 PAD:2 CF:1)
41300 REQUEST: \4WHAT
41400 \*(A SPECIALIZED BEING WHICH DOES (ALTER ROW AND/OR ANOTHER ELEMENT OF T
41500 -HE SAME OUTER LIST))
41600 REQUEST: \4WHY
41700 \*(BECAUSE MODIFYING THE STRUCTURE OF AN INDIVIDUAL ELEMENT IS EQUIVALEN
41800 -T TO UPDATING OUR DESCRIPTION OF A SINGLE
41900 PARTICULAR CONCEPT, AND THIS IS FUNDAMENTAL TO A DECENT CONCEPT FORMATIO
42000 -N PROGRAM AND COMPLEX:ALTERATION IS TOO GENERAL
42100 TO USE AS IT IS)
42200 REQUEST: \4HOW
42300 \*(BY MODIFYING THE STRUCTURE OF SUCH AN ELEMENT)
42400 REQUEST: \4OLDER
42500 \*COMPLEX:ALTERATION:45
42600 REQUEST: \4CH
42700 \*(COMPLEX:ALTERATION:46) *** COMPLEX:ALTERATION:45 *** (MODIFY:STRUCTUR
42800 -E:9 PAD:2 CF:1)
42900 REQUEST: \4QUIT
43000 \*INTERRUPT? \4NO
43100 \*INTERRUPT? \4NO
43200 \*INTERRUPT? \4NO
43300 \*INTERRUPT? \4YES
43400 \*REQUEST: \4CH
43500 \*NIL *** IS:OF:TYPE:61 *** (PAD:2 CF:1)
43600 REQUEST: \4WHAT
43700 \*(A SPECIALIZED BEING WHICH DOES (SEE IF ARG IS OF THE TYPE SPECIFIED.
43800 -THE PARTICULAR TYPE IS DELINEATED BY THE SPECIAL
43900 KNOWLEDGE (COMMENT BREAKAWAY)))
44000 REQUEST: \4META:CODE
44100 \*(EQUAL NAME:OF:CLASS HALT)
44200 REQUEST: \4QUIT
44300 \*INTERRUPT? \4YES
44400 \*REQUEST: \4CH
44500 \*NIL *** FOREACH *** (PAD:2 CF:1)
44600 REQUEST: \4WHAT
44700 \*(GO THROUGH THE KNOWN SPACE OF NAMES ,WHICH IS SET:OF:POSSIBLE:NAMES:O
44800 -F:CLASS ,AND PERFORM (PROGN (PUPRINT NAME)
44900 (COND ((GETP NAME CLASS:OBJECTS:33) (PUPRIN1 "OBJECTS ") (PUPRINT (GETP
45000 -NAME CLASS:OBJECTS:33)))) (COND ((GETP NAME
45100 CLASS:YES:RELNS:35) (PUPRIN1 "MUST HAVE ") (PUPRINT (GETP NAME CLASS:YES
45200 :RELNS:35)))) (COND ((GETP NAME
45300 CLASS:NO:RELNS:36) (PUPRIN1 "MUSNT HAVE ") (PUPRINT (GETP NAME CLASS:NO:
45400 -RELNS:36)))) (COND ((GETP NAME
45500 CLASS:MAYBE:RELNS:37) (PUPRIN1 "MAY HAVE ") (PUPRINT (GETP NAME CLASS:MA
45600 -YBE:RELNS:37)))) (TERPRI) T) ON EACH, UNTIL
45700 SOME SPECIFIED TERMINATION CONDITION IS REACHED)
45800 REQUEST: \4QUIT
45900 \*
46000 ARCH
46100 OBJECTS (A B C (D))
46200 MUST HAVE ((S A B))
46300 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
46400
46500 TOWER
46600 OBJECTS (A B C D)
46700 MUST HAVE ((S A B))
46800 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
46900
47000 ROW
47100 OBJECTS (A B C)
47200 MUST HAVE ((TOUCH A C))
47300 MAY HAVE ((TOUCH B C) (BLOCK A) (RED B))
47400
47500 INTERRUPT? \4YES
47600 \*REQUEST: \4SET:OF:POSSIBLE:NAMES:OF:CLASS
47700 \*(ARCH TOWER ROW)
47800 REQUEST: \4CH
47900 \*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
48000 REQUEST: \4WHAT
48100 \*(A SPECIALIZED BEING WHICH DOES (TAKE THE ARG1 ELEMENT:4 IN A TRIVIAL
48200 -WAY; EITHER BY ACCESSING IT OR BY READING
48300 IT IN))
48400 REQUEST: \4QUIT
48500
48600
48700 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
48800 \4(??? (A B C) (BLOCK A) (BLOCK B]\*
48900
49000 INTERRUPT? \4YES
49100 \*REQUEST: \4ELEMENT:4
49200 \*(??? (A B C) (BLOCK A) (BLOCK B))
49300 REQUEST: \4CH
49400 \*NIL *** SOME:PART:OF:12 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
49500 REQUEST: \4QUIT
49600 \*INTERRUPT? \4NO
49700 \*INTERRUPT? \4NO
49800 \*INTERRUPT? \4NO
49900 \*INTERRUPT? \4NO
50000 \*INTERRUPT? \4NO
50100 \*INTERRUPT? \4NO
50200 \*INTERRUPT? \4NO
50300 \*INTERRUPT? \4NO
50400 \*INTERRUPT? \4NO
50500 \*INTERRUPT? \4NO
50600 .
50700 .
50800 .
50900 \*INTERRUPT? \4NO
51000 \*INTERRUPT? \4NO
51100 \*INTERRUPT? \4NO
51200 \*
51300
51400
51500 (COMMENT I MUST TELL YOU (COMMENT I GIVE UP))
51600
51700 .
51800 .
51900 .
52000
52100 REQUEST: \4CH
52200 \*NIL *** SIMPLE:COMPARE:FN:43 *** (BETTER:38 CONDITIONAL:INSERTION:55 M
52300 -ODIFY:STRUCTURE:42 COMPLEX:ALTERATION:45
52400 MODIFY:STRUCTURE:9 PAD:2 CF:1)
52500 REQUEST: \4WHAT
52600 \*(A SPECIALIZED BEING WHICH DOES (QUASI-COMPARISON WHICH ALWAYS RETURNS
52700 A CONSTANT VALUE))
52800 REQUEST: \4WHY
52900 \*(BECAUSE ORDERING ISNT VERY IMPORTANT HERE AND SIMPLE:COMPARE:FN IS TO
53000 -O GENERAL TO USE AS IT IS)
53100 REQUEST: \4QUIT
53200 \*INTERRUPT? \4YYES
53300 \*
53400 NO, NO. TYPE YES OR NO ......... INTERRUPT? \4YES
53500 \*REQUEST: \4CH
53600 \*NIL *** BETTER:38 *** (CONDITIONAL:INSERTION:55 MODIFY:STRUCTURE:42 CO
53700 -MPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
53800 CF:1)
53900 REQUEST: \4EXPLICIT:ARGS
54000 \*(B1 B2)
54100 REQUEST: \4B1
54200 \*(S A B)
54300 REQUEST: \4B2
54400 \*(S C D)
54500 REQUEST: \4OLDER
54600 \*CONDITIONAL:INSERTION:55
54700 REQUEST: \4CH
54800 \*(BETTER:38) *** CONDITIONAL:INSERTION:55 *** (MODIFY:STRUCTURE:42 COMP
54900 -LEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
55000 CF:1)
55100 REQUEST: \4WHAT
55200 \*(A SPECIALIZED BEING WHICH DOES (PERHAPS WE WILL STICK IN A CONDITIONA
55300 -L INSERTION STATEMENT, STICKING IN AN ((S
55400 B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C)) -TYPE ELEMENT INTO ITS PAREN
55500 -T STRUCTURE))
55600 REQUEST: \4META:CODE
55700 \*(PROGN
55800 (SETQ RESULT:7 (LIST:JOIN RESULT:5 RESULT:6
55900 (SETDIFFERENCE ELEMENT:RELNS:15
56000 (APPEND (GETP NAME:OF:CLASS
56100 CLASS:YES:RELNS:35)
56200 (GETP NAME:OF:CLASS
56300 CLASS:NO:RELNS:36)
56400 (GETP NAME:OF:CLASS
56500 CLASS:MAYBE:RELNS:37))
56600 )))
56700 NIL
56800 (COND
56900 (RESULT:7
57000 (PUT NAME:OF:CLASS CLASS:MAYBE:RELNS:37 (MERGE:IN RESULT:7 (GE
57100 -TP NAME:OF:CLASS CLASS:MAYBE:RELNS:37) BETTER:38)))
57200 (T (SETQ RESULT:7 NIL))))
57300 REQUEST: \4RESULT:7
57400 \*((S A B))
57500 REQUEST: \4RESULT:6
57600 \*NIL
57700 REQUEST: \4RESULT:5
57800 \*((S A B))
57900 REQUEST: \4(GETP NAME:OF:CLASS CLASS:MAYBE:RELNS:37]
58000 \*((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
58100 REQUEST: \4QUIT
58200 .
58300 .
58400 .
58500 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
58600 \4(HALT)\*
58700
58800
58900
59000 FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
59100
59200 1 EXIT FROM SYSTEM
59300 2 CONTINUE SERVING, AS BEFORE
59400 3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
59500 4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
59600
59700 OK, GO .......... \41\*
59800 "EXITING SYSTEM"
59900
60000 \5<end of session with the synthesized program>\*
60100
60200 ←\4SET:OF:POSSIBLE:NAMES:OF:CLASS\*
60300 (ARCH TOWER ROW HALT)
60400
60500 ←\4CDR(ARCH)\*
60600 (CLASS:OBJECTS:33 (A B C (D)) CLASS:CLASSNAME:34 ARCH
60700 CLASS:YES:RELNS:35 ((S A B)) CLASS:NO:RELNS:36 NIL
60800 CLASS:MAYBE:RELNS:37 ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
60900 )